<?php

class FormularioRegistro extends sfForm
{
  public function configure()
  {
    $this->setWidgets(array(
      'nombre'      => new sfWidgetFormInput(),
      'email'       => new sfWidgetFormInput(),
      'contrasena_1' => new sfWidgetFormInputPassword(),
      'contrasena_2' => new sfWidgetFormInputPassword(),
      'ciudad'       => new sfWidgetFormInput(),
      'pais'         => new sfWidgetFormInput(),
    ));
    
    $this->widgetSchema->setLabels(array(
      'nombre'  => 'Usuario',
      'email'   => 'Correo electr&oacute;nico',
      'contrasena_1' => 'Contrase&ntilde;a',
      'contrasena_2' => 'Repetir contrase&ntilde;a',
      'ciudad' => 'Ciudad',
      'pais' => 'Pa&iacute;s',
    ));
    
    $this->setValidators(array(
      'nombre'  => new sfValidatorString(
        array('required' => true, 'min_length' => 5, 'max_length' => 15)
        , array(
          'min_length' => 'El nombre de usuario es demasiado corto. M&iacute;nimo 5 caracteres'
          , 'required' =>'Nombre de usuario obligatorio'
          , 'max_length' => 'El nombre de usuario es demasiado largo. M&aacute;ximo 15 caracteres')),
     
      'email' => new sfValidatorEmail(array(
      	'required' => true)
        , array('required' => 'Correo obligatorio', 'invalid' => 'Correo erroneo')),
        
      'contrasena_1' => new sfValidatorString(
        array('required' => true, 'min_length' => 5, 'max_length' => 15)
        , array('required' => 'Contrase&ntilde;a requerida', 'min_length' => 'Contrase&ntilde;a m&iacute;nima de 5 caracteres', 'max_length' => 'Contrase&ntilde;a m&aacute;xima de 15 caracteres')),
        
      'contrasena_2' => new sfValidatorString(
        array('required' => true, 'min_length' => 5, 'max_length' => 15)
        , array('required' => 'Contrase&ntilde;a requerida', 'min_length' => 'Contrase&ntilde;a m&iacute;nima de 5 caracteres', 'max_length' => 'Contrase&ntilde;a m&aacute;xima de 15 caracteres')),
        
      'ciudad' => new sfValidatorString(
        array('max_length' => 35, 'required' => false)
        , array('max_length' => 'Tama&ntilde;o m&aacute;ximo de 35 caracteres')),
      
      'pais' => new sfValidatorString(
        array('max_length' => 35, 'required' => false)
        , array('max_length' => 'Tama&ntilde;o m&aacute;ximo de 35 caracteres')),
    ));
        
    $this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
      new sfValidatorSchemaCompare('contrasena_1', sfValidatorSchemaCompare::EQUAL, 'contrasena_2'
        , array()
        , array('invalid' => 'Las dos contrase&ntilde;as deben coincidir'))
      , new sfValidatorPropelUnique(array('model' => 'Usuario', 'column' => array('nombre'))
        , array('invalid' => 'El usuario ya est&aacute; dado de alta'))
      , new sfValidatorPropelUnique(array('model' => 'Usuario', 'column' => array('email'))
        , array('invalid' => 'El correo ya est&aacute; registrado'))
      )));
  }
}